/*
 * 文件名：UserDao.java 
 * 版权：Copyright by will_awoke 
 * 描述： 
 * 修改人：will_awoke 
 * 修改时间：2014-5-29 
 * 跟踪单号： 
 * 修改单号： 
 * 修改内容：
 */

package com.qbgs.rbac.dao;


import java.util.List;

import com.qbgs.base.Page;


/**
 * 用户管理Dao
 * @author will_awoke
 * @version 2014-5-29
 * @see UserDao
 * @since
 */
public interface UserDao
{

    /**
     * 用户分页查询
     * @param currentPage 当前页
     * @param numPerPage 每页显示记录数
     * @param loginName 用户名
     * @return
     * @see
     */
    Page queryUserPage(int currentPage, int numPerPage, String loginName);

    /**
     * 修改用户登录密码
     * @param loginName
     * @param newPwd
     * @return 
     * @see
     */
    int updateUserPwd(String loginName, String newPwd);

    /**
     * 新增用户
     * @param loginName
     * @param password
     * @param realName
     * @param email
     * @param state
     * @param remarks
     * @return 新增用户对应的序列id主键
     * @see
     */
    int addUser(final String loginName, final String password, final String realName,
                final String email, final String state, final String remarks);

    /**
     * 新增用户角色关联关系
     * @param userId
     * @param roleId
     * @return 
     * @see
     */
    int addUserRole(String userId, String roleId);

    /**
     * 根据系统登录账号查询记录数
     * @param loginName
     * @return 1=存在相同的账号，0=不存在
     * @see
     */
    int queryByLoginName(String loginName);

    /**
     * 查询用户所绑定角色id集合
     * @param userId
     * @return 
     * @see
     */
    List<String> queryRoleIdsByUserId(String userId);

    /**
     * 删除用户
     * @param userId
     * @return 
     * @see
     */
    int deleteUser(String userId);

    /**
     * 删除用户所绑定的角色关系
     * @param userId
     * @return 
     * @see
     */
    int deleteRolesOfUser(String userId);

    /**
     * 根据用户id修改用户消息
     * @param userId
     * @param loginName
     * @param realName
     * @param email
     * @param remarks
     * @return 
     * @see
     */
    int updateUser(final String userId, final String loginName, final String realName,
                   final String email, final String remarks);

}
